package com.huida.app.java8.unit01;

import lombok.extern.slf4j.Slf4j;

import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * @author wangzhuangzhuang
 * @DESC:
 * @date 2022-02-01 22:39
 */
@Slf4j
public class Demo01 {
	public static void main(String[] args) {
		List<Double> myRandomSeed = Stream.generate(Math::random)
				.limit(10)
				.map(x -> Math.round(x * Math.pow(10, 2)) / Math.pow(10, 2))
				.collect(Collectors.toList());
		// [0.46, 0.24, 0.17, 0.18, 0.11, 0.31, 0.04, 0.51, 0.14, 0.18]
		System.out.println(myRandomSeed);
		/*
		* Stream接口定义的generate方法传入Supplier作为参数。Supplier是一个函数式接口
		* 其单一抽象方法get不传入任何参数且只生成一个结果。
		* Math累的random方法与get方法的签名相互兼容，因为random方法同样不传入任何参数，
		* 且产生一个0 - 1 之间，均匀分布的双精度伪随机数。
		* 方法引用 Math::random表示该方法是Supplier接口的实现。
		*
		* Stream.generate方法产生的是一个无限流(infinite stream)
		**/
	}
}